UltraDefrag is an open source disk defragmenter for
Windows NT 4.0 and later operating systems. It makes use of the same defragmenting
API used by many other windows defrag utilities, both open and closed
source. However, UltraDefrag has two features that make
it unique. The first is that it has a kernel mode driver that does most of the work.
The second is the ability to run the application at boot up time in a manner similar to chkdsk.
This allows for faster defragmentation time and the ability to defragment all files
including system files.
UltraDefrag has the following features:
- Very fast defragmentation, the work is done via a kernel mode
driver which has an optimal defraging algorithm.
- Ability to defragment system files.
- Very small engine written in pure C.
- Nice graphical interface - compact and functional.
- Safety, because the file moving is accomplished with
Microsoft's own Defrag API.
- Simple to use.
- Ability to generate html reports of fragmentation status.
- Ability to include/exclude files based on simple filters.
- Native x64 support.
- Free: Distributed
with full source code under the GNU General Public License.
UltraDefrag supports the following filesystems:
FAT12/16/32, NTFS and on Vista UDF. UDF is a file system intended for optical media
such as DVDs that unlike ISO9660, is rewriteable. It has also the ability to defragment
volumes at boot time allowing you to move many system files that are always locked by
the operating system. Currently all files besides the registry hives and the pagefile
can be scanned at boot time. UltraDefrag can also
defragment files and folders compressed by NTFS file system compression. And can even
defragment floppies, although doing so is not particularly useful.
Note
Directories on FAT volumes cannot be moved. This is a well known fastfat.sys
system driver mistake, it cannot be fixed. Most of other defraggers have the same
restriction.
Supported operating systems
UltraDefrag runs on Windows NT 4.0, Windows 2000, Windows XP, Windows Server
2003 and Windows Vista, including 64 bit versions of Windows. NT 4.0 Alpha
is not supported currently.
Defragmentation algorithm
UltraDefrag can perform 3 jobs: Volume Analysis,
Volume Defragmentation and Volume Optimization. Read carefully next chapters to understand
how to run them. Here the appropriate algorithms will be discussed.
- Volume Analysis When the analysis job is requested, driver searches for
files in specified directory. GUI program analyses all found files,
because it needs a full information to redraw the cluster map properly. Console and native
interfaces skips all unwanted files filtered out by user defined filters. Therefore
these interfaces makes an analysis faster.
- Volume Defragmentation Program's engine defragments files by filling the free
space areas at the beginning of the volume with fragmented files contents. To speed up
this process, exclude unimportant files (temporary, archives and so on) using filters.
- Volume Optimization This job contains six steps:
- Initial analysis. The defragmenter collects information about all files
on the volume.
- First optimization step. The program tries to become largest free space area
at the beginning of the volume by moving all data from the beginning to the free
space areas in the terminal part of volume.
- Second analysis. This operation updates all information and frees temporarily
allocated system space on NTFS.
- Volume defragmentation. Fragmented files will be defragmented. As described
above they will be placed in the leading free space areas, freed on the first
optimization step.
- Second optimization step. Unfragmented files will be moved to the beginning of
the volume. They will be placed into the rest of the leading free space areas after
files successfully moved at the previous step.
- Final analysis. This operation updates all information.
Note that Volume Optimization is very effective only when processed volume has a lot of
free space. This is not a program's mistake, this is a cause of the Windows
Defragmentation API imperfectness.
Volume optimization algorithm works only on NTFS volumes, because FAT directories
aren't moveable.
NTFS file system is very imperfect. We cannot move internal files, such as $MFT,
$Bitmap and other internal files with a '$' in the begginning of their names. This is
a well known ntfs.sys driver's bug. Free space may be splitted
into few small parts by such unmoveable internal files. So you may never become a large free
space area to defragment pagefile and other big files.
Though there are still two ways to achieve a full volume optimization:
- The easiest way is very simple. Move all files from selected volume to another
disk, than reformat the volume and move all files back. Works fine, except for
system volumes that have locked files.
- The second way requires an additional software:
GParted Live CD (open source
program) or Partition Magic
(commercial software). First of all - reduce the
selected volume size as much as possible. This
operation will move all data to the beginning of the
volume. All system files will be moved too (including $MFT, $Bitmap and so on). Next step - restore size of the
selected volume. After this step we will have large contignuous free space area at
the end of the volume. Final step - make a
boot time defragmentation of the volume
using UltraDefrag.
Note
This section is applicable only for
UltraDefrag
version 3.0.0 or higher. Old versions of the program have a little bit imperfect
algorithms. The new algorithms described here are much faster, effective
and reliable!